import { IParam, EntityBase } from '@/core';
import { IAUTH_LOG } from './interface/i-auth-log';
import AUTH_LOGKeys from './auth-log-keys';

/**
 * 登录日志基类
 * 基于template/src/api/{{appEntities}}/{{appEntities}}-base.ts.hbs生成
 *
 * @export
 * @abstract
 * @class AUTH_LOGBase
 * @extends { EntityBase }
 * @implements { IAUTH_LOG }
 */
export abstract class AUTH_LOGBase extends EntityBase implements IAUTH_LOG {
	/**
	 * 实体名称
	 *
	 * @readonly
	 * @type {string}
	 * @memberof AUTH_LOGBase
	 */
	get srfdename(): string {
		return 'AUTH_LOG';
	}

	/**
	 * 当前实体所有属性
	 *
	 * @protected
	 * @type {string[]}
	 * @memberof AUTH_LOGBase
	 */
	protected get keys(): string[] {
		return AUTH_LOGKeys;
	}

	/**
	 * Creates an instance of ConstactOppoBase.
	 * @param {*} [data]
	 * @memberof AUTH_LOGBase
	 */
	constructor(data?: any) {
		super();
		this.setData(data);
	}

	get srfkey(): string {
		return this.id;
	}

	set srfkey(val: string) {
		this.id = val;
	}

	/**
	 * id
	 **/
	id?: any;

	/**
	 * 登录时间（数据库）
	 **/
	timestmp?: any;

	/**
	 * 日志消息
	 **/
	message?: any;

	get srfmajortext(): string {
		return this.name;
	}

	set srfmajortext(val: string) {
		this.name = val;
	}
	/**
	 * 日志名称
	 **/
	name?: any;

	/**
	 * 日志级别
	 **/
	log_level?: any;

	/**
	 * 登录地址
	 **/
	ip_address?: any;

	/**
	 * 登录状态
	 **/
	status?: any;

	/**
	 * 调用者文件名
	 **/
	caller_filename?: any;

	/**
	 * 调用者类名
	 **/
	caller_class?: any;

	/**
	 * 调用者方法名
	 **/
	caller_method?: any;

	/**
	 * 代码行
	 **/
	caller_line?: any;

	/**
	 * 参数1
	 **/
	arg0?: any;

	/**
	 * 参数2
	 **/
	arg1?: any;

	/**
	 * 参数3
	 **/
	arg2?: any;

	/**
	 * 参数4
	 **/
	arg3?: any;

	/**
	 * 登录时间
	 **/
	time?: any;

	/**
	 * 重置实体数据
	 *
	 * @param {IParam} [data={}]
	 * @memberof AUTH_LOGBase
	 */
	reset(data: IParam = {}): void {
		super.reset(data);
		this.id = data.id || data.srfkey;
		this.name = data.name || data.srfmajortext;
	}
}
